package com.liy.cloud.common.base.dao;

import com.liy.cloud.common.base.entity.BaseEquInfoEntity;
import com.liy.cloud.common.vo.EquInfoVO;
import com.das.framework.common.dao.IBaseDao;
import com.das.framework.common.vo.PageVO;

import java.util.List;
import java.util.Map;

/**
 * @Author: zhangw
 * @Date: 2018/6/22  9:56
 * @Description:
 **/
public interface BaseEquInfoDao extends IBaseDao<BaseEquInfoEntity, String> {


    List<BaseEquInfoEntity> queryByTypeCodeOrDiviceType(BaseEquInfoEntity entity, PageVO<BaseEquInfoEntity> page);

    List<BaseEquInfoEntity> selectByMonitor(BaseEquInfoEntity entity, PageVO<BaseEquInfoEntity> page);

    /**
     * 按车站查询所有设备，带大、小类型
     * @author shitou
     * @return
     */
    List<EquInfoVO> selectAllAndType(EquInfoVO vo);

    /***
     * 批量更新设备坐标信息
     * @author shitou
     * @param list
     * @return
     */
    int updateAngleBatch(List<BaseEquInfoEntity> list);

    /**
     *
     * 功能描述: 根据参数params查询设备信息
     *
     * @param: params：车站编号 stationid，设备类型集合 devicetypes
     * @return: 
     * @auther: libs
     * @date: 2018/8/14 9:29
     */
    List<BaseEquInfoEntity> getByParams(Map<String, Object> params, PageVO<BaseEquInfoEntity> page) throws Exception;



    /**
     * 查询设备列表  必须传参数如下
     * @param: params： BaseEquInfoEntity  必须设置属性 ( 车站编号 stationid， 设备类型集合 devicetypesList)
     * @return:
     * @auther: liyang
     * @date: 2018/9/05 9:29
     */
    List<BaseEquInfoEntity> selectBySystemIdAndDeviceTypeList(BaseEquInfoEntity entity);


    /**
     * 按照 stationid 和 devicetype 第一个字符来查询
     * @param: params： BaseEquInfoEntity  ( 车站编号 stationid， 设备类型 devicetype)
     * @return:
     * @auther: liyang
     * @date: 2018/9/05 9:29
     */
    List<BaseEquInfoEntity> selectByDeviceTypeSubFirst(BaseEquInfoEntity entity);


    /**
     * 按照 stationid 和 devicetype 前2个字符来查询
     * @param: params： BaseEquInfoEntity  ( 车站编号 stationid， 设备类型 devicetype)
     * @return:
     * @auther: liyang
     * @date: 2018/9/05 9:29
     */
    List<BaseEquInfoEntity> selectByDeviceTypeSubSecond(BaseEquInfoEntity entity);

    /**
     * 根据车站编号集合 stationIds, 设备大类集合 typeCodes, 设备种类集合 deviceTypes, 设备编号（模糊） deviceId, 设备名（模糊） deviceName 查询设备信息
     *
     * @param params
     * @param page
     * @return 
     * @auther libs
     * @date 2018/11/13 15:41
     */
    List<BaseEquInfoEntity> selectInfoByPage(Map<String, Object> params, PageVO page);

    /**
     * 返回设备TVM分类数量
     * @return
     * @throws Exception
     */
    List<Map<String, Object>> getEquTypeTvmNum() throws Exception;

    /**
     * 返回设备BOM分类数量
     * @return
     * @throws Exception
     */
    List<Map<String, Object>> getEquTypeBomNum() throws Exception;

    /**
     * 返回设备AVM分类数量
     * @return
     * @throws Exception
     */
    List<Map<String, Object>> getEquTypeAvmNum() throws Exception;

    /**
     * 返回设备AGM分类数量
     * @return
     * @throws Exception
     */
    List<Map<String, Object>> getEquTypeAgmNum() throws Exception;
}
